Historically, software applications were typically batch-processed on a mainframe at a centralized computing center. More recently, the availability of inexpensive, yet powerful personal computers has displaced the batch-processing mode of the past. The availability of a wide range of user-friendly, productivity enhancement software has made personal computing ubiquitous. Although more easily customized to users"" specific requirements, the proliferation of personal computers is making the job of managing large scale computing more difficult. In the past, the mainframe in the computing center performed centralized system management tasks, including library and configuration management and software version control, among others. However, in a modem network with diverse processors, peripherals, and software applications, the range of possible configurations is staggering.
Some of the configuration information is hardware specific, such as disk controller port addresses, communication port addresses and video port addresses. Further, software specific configuration parameters may be set within configuration files for each application. For example, a configuration file stored within an IBM-compatible personal computer known as an autoexec.bat file may include path statements. Additionally, specific application software may require specific initialization information to run effectively. Typically, this information may be set in an initialization (.ini) file.
Once installed, the computer configuration does not remain static, however. The user may update configurable preferences while operating the software, such as updating file open/save paths. Additionally, the user may xe2x80x9cpersonalizexe2x80x9d the software by adding new information such as bookmark data in the case of World-Wide-Web browser software, for example. Moreover, due to the constant competitive pressure to build a better product, by the time a software release is delivered to the user, software developers are already working on the next release. To cope with rising demands on friendlier and more functional applications, software developers have increasingly adopted a component model where an application is reduced into a plurality of modules or components. Modifications may be made to a single component to enhance its performance or implement new features not previously available without compromising the status of the remaining components. In this paradigm, a software application is a collection of many separate files, each of which may be generated by unrelated software developers who may be more aware of each component""s integrity than the integrity of the assembled package. Although software reuse is promoted, the paradigm necessitates a higher level of inter-component integrity. Not surprisingly, although more frequent updates bring more functional software to users, the complexity of managing the release installation increases disproportionally with the number of changes.
Historically, relationships between components have been manually detected and component states recorded in a log. This information is external of the components themselves and must be updated whenever the components change. As state information is recorded only at the time of development, changes made subsequent to the time of development may be lost. As the pace of changes increases and complexity of the software assembly process grows, the external representation of the correct state relationship between components becomes prone to error.
Moreover, during use, users may personalize the software and thus change the state information. The difference in state information between software installation and software operation leads to an unpredictable operation and may require more support from information system (IS) personnel.
Maintenance of the current states of software applications in commercial operations is needed in a variety of applications, including software installation, synchronization, backup, recovery, analysis and repair. A detailed knowledge of a computer""s dynamic environment and its system configuration is needed to prevent situations where modifications to one component to correct one problem may introduce other errors if improperly installed. Moreover, an accurate knowledge of system configuration is required in order to verify compatibility and to ensure integrity across multiple operating environments and across diverse processors.
The present invention determines an application state by determining entities which provide predetermined functionalities for a user, determining items that depend from the determined entities, grouping entities by pruning overlapping entities and combining similar entities, and packaging the group of entities using a predetermined format. The system provides automatic relationship resolution based on a current machine state to enumerate in a deterministic manner fundamental data, metadata and dependencies necessary for correct application function. A complete, persistent run-time state information about the application is generated which may be used in installation, synchronization, backup, recovery, analysis and repair of a computer system.
In one aspect, the entities are analyzed by determining tiers of user accessibility. Further, for each tier, root entities are enumerated based on predetermined criteria. For each enumerated entity, one or more dependencies of the entity are determined.
In another aspect, the item dependency is determined by generating one or more candidates, analyzing the candidates, confirming the candidates, and packaging items associated with the candidate.
In yet another aspect, the entity grouping and packaging is accomplished by determining an inter-entity relationship, processing the entities based on the inter-entity relationship, and placing the entities into a predetermined format.
In another aspect, the format contains detailed information about each item and each entity. The format has zero or one information block and one or more entity blocks. Multiple information blocks with their associated entity blocks may be grouped together.
Advantages of the present invention include the following. The invention dynamically rebuilds an external representation of correct state from the components themselves. Moreover, because the state construction process is dynamic, the invention can follow software through its entire life cycle and provide information for many management tasks that need detailed information about the application during execution.